﻿//Install Visual T4 for syntax highlighting!
//http://visualstudiogallery.msdn.microsoft.com/40a887aa-f3be-40ec-a85d-37044b239591



using System;

namespace Sponsorship.Domain.PresentTemplates
{
		
    public sealed class EnterPresentTemplate : ICommand
    {
        public Guid PresentTemplateId { get; private set; }
        public PresentData PresentData { get; private set; }
        public string Comment { get; private set; }
        
        public EnterPresentTemplate () {}
        public EnterPresentTemplate (Guid presentTemplateId, PresentData presentData, string comment)
        {
            PresentTemplateId = presentTemplateId;
            PresentData = presentData;
            Comment = comment;
        }
    }
    
    public sealed class PresentTemplateEntered : Event
    {
        public Guid PresentTemplateId { get; private set; }
        public PresentData PresentData { get; private set; }
        public string Comment { get; private set; }
        
        public PresentTemplateEntered () {}
        public PresentTemplateEntered (Guid presentTemplateId, PresentData presentData, string comment)
        {
            PresentTemplateId = presentTemplateId;
            PresentData = presentData;
            Comment = comment;
        }
    }
    
    public sealed class ChangePresentTemplate : ICommand
    {
        public Guid PresentTemplateId { get; private set; }
        public int Version { get; private set; }
        public PresentData PresentData { get; private set; }
        public string Comment { get; private set; }
        
        public ChangePresentTemplate () {}
        public ChangePresentTemplate (Guid presentTemplateId, int version, PresentData presentData, string comment)
        {
            PresentTemplateId = presentTemplateId;
            Version = version;
            PresentData = presentData;
            Comment = comment;
        }
    }
    
    public sealed class PresentTemplateChanged : Event
    {
        public Guid PresentTemplateId { get; private set; }
        public PresentData PresentData { get; private set; }
        public string Comment { get; private set; }
        
        public PresentTemplateChanged () {}
        public PresentTemplateChanged (Guid presentTemplateId, PresentData presentData, string comment)
        {
            PresentTemplateId = presentTemplateId;
            PresentData = presentData;
            Comment = comment;
        }
    }
    
    public sealed class DeletePresentTemplate : ICommand
    {
        public Guid PresentTemplateId { get; private set; }
        public int Version { get; private set; }
        
        public DeletePresentTemplate () {}
        public DeletePresentTemplate (Guid presentTemplateId, int version)
        {
            PresentTemplateId = presentTemplateId;
            Version = version;
        }
    }
    
    public sealed class PresentTemplateDeleted : Event
    {
        public Guid PresentTemplateId { get; private set; }
        
        public PresentTemplateDeleted () {}
        public PresentTemplateDeleted (Guid presentTemplateId)
        {
            PresentTemplateId = presentTemplateId;
        }
    }

}